package com.cuanbobox.utils;

import android.app.Activity;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.util.List;

/**
 * 读取Activity传递的数据工具类
 */
public class ActivityArgumentsUtil {

    private Activity aty;

    public ActivityArgumentsUtil(Activity aty) {
        this.aty = aty;
    }

    /**
     * 获取传过来的参数
     *
     * @param key 键
     */
    public String getStringArguments(String key) {
        return aty.getIntent().getStringExtra(key);
    }

    /**
     * 获取传过来的参数
     *
     * @param key          键
     * @param defaultValue 默认值
     */
    public boolean getBooleanArguments(String key, boolean defaultValue) {
        return aty.getIntent().getBooleanExtra(key, defaultValue);
    }

    /**
     * 获取传过来的参数
     *
     * @param key          键
     * @param defaultValue 默认值
     */
    public int getIntArguments(String key, int defaultValue) {
        return aty.getIntent().getIntExtra(key, defaultValue);
    }

    /**
     * 获取传过来的参数
     *
     * @param key          键
     * @param defaultValue 默认值
     */
    public double getDoubleArguments(String key, double defaultValue) {
        return aty.getIntent().getDoubleExtra(key, defaultValue);
    }

    /**
     * 获取传过来的参数
     *
     * @param key          键
     * @param defaultValue 默认值
     */
    public float getFloatArguments(String key, float defaultValue) {
        return aty.getIntent().getFloatExtra(key, defaultValue);
    }

    /**
     * 获取传过来的参数
     *
     * @param cls 传递过来的实体对象类型
     */
    public Object getObjectArguments(Class cls) {
        return getObjectArguments(cls, cls.getSimpleName());
    }

    /**
     * 获取传过来的参数
     *
     * @param cls 传递过来的实体对象类型
     * @param key 键
     */
    public Object getObjectArguments(Class cls, String key) {
        String jsonObject = aty.getIntent().getStringExtra(key);
        return new Gson().fromJson(jsonObject, cls);
    }

    /**
     * 获取传过来的参数
     *
     * @param key       键
     * @param typeToken 要解析的集合数据类型
     */
    public List<?> getListArguments(String key, TypeToken typeToken) {
        String jsonArray = aty.getIntent().getStringExtra(key);
        return new Gson().fromJson(jsonArray, typeToken.getType());
    }

}
